package com.njtech.pet.dao;

import com.njtech.pet.entity.Item;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author lxj
 * Date 2020-03-10 10:22
 * Description 物品记录
 */
public interface ItemDao {

    /**
     * 插入
     * @param item 记录
     * @return 行数
     */
    int insert(Item item);

    /**
     * 修改
     * @param item 新的记录
     * @return 行数
     */
    int updateByItemId(Item item);

    /**
     * 选择
     * @param item 封装了id, type,subject内容，会根据是否为空添加对应查找语句
     * @param upper 价格的上限
     * @param lower 价格的下限
     * @param states 状态集合，可能根据多种状态显示
     * @param beginDate 起日期
     * @param endDate 止日期
     * @param orderState 是否升序排列
     * @return 物品集合
     */
    List<Item> selectElastically(@Param("item")Item item,
                                 @Param("upper")Integer upper, @Param("lower")Integer lower,
                                 @Param("states")List<String> states,
                                 @Param("beginDate")String beginDate, @Param("endDate")String endDate,
                                 @Param("orderState")String orderState);

    /**
     * 根据id查询
     * @param id 输入id
     * @return 返回结果
     */

    Item selectById(@Param("id")Integer id);


    /**
     * 查找所有保险类型
     * @return List<String>
     */
    List<String> selectAllType();

    /**
     * 查找所有被保对象
     * @return List<String>
     */
    List<String> selectAllSubject();

    List<Item> selectByType(@Param("type")String type);
}
